import { Binary } from "mongodb";

/**
 * 状态管理
 */
export enum SkuStatus {
  /**
   * 正常
   */
  Normal = 1,
  /**
   * 禁用
   */
  Offline = 2,
}

/**
 * 权限
 */
export enum UserRole {
  /**
   * 超级管理员
   */
  Super = 1,
  /**
   * 普通用户
   */
  Permise = 2,
}

/**
 * 性别
 */
export enum UserSex {
  /**
   * 男
   */
  man = 1,
  /**
   * 女
   */
  woman = 2,
}
export enum Education {
  /**
   * 不限
   */
  unlimit = 1,
  /**
   * 初中及以下
   */
  junior = 2,
  /**
   * 中专/中技
   */
  secondary = 3,
  /**
   * 高中
   */
  highSchool = 4,
  /**
   * 大专
   */
  juniorCollege = 5,
  /**
   * 本科
   */
  undergraduate = 6,
  /**
   * 硕士
   */
  master = 7,
  /**
   * 博士
   */
  doctor = 8,
}
export enum Year {
  /**
   * 不限
   */
  unlimit = 1,
  /**
   * 在校生
   */
  enrollment = 2,
  /**
   *应届生
   */
  fresh = 3,
  /**
   * 1年以内
   */
  withinOne = 4,
  /**
   * 1-3年
   */
  WithinThree = 5,
  /**
   * 3-5年
   */
  WithinFive = 6,
  /**
   *5-10年
   */
  Withinten = 7,
  /**
   * 十年以上
   */
  decade = 8,
}
export enum companySize {
  /**
   * 不限
   */
  unlimit = 1,
  /**
   *0-20人
   */
  lessTwenty = 2,
  /**
   *20-99人
   */
  lessOhundred = 3,
  /**
   *100-499人
   */
  lessFhundred = 4,
  /**
   * 500-999人
   */
  lessOthousand = 5,
  /**
   * 1000-9999人
   */
  lessTthousand = 6,
  /**
   *10000人以上
   */
  moreTthousand = 7,
}
export enum FinanceStage {
  /**
   * 不限
   */
  unlimit = 1,
  /**
   *未融资
   */
  Unfunded = 2,
  /**
   *天使轮
   */
  angelwheel = 3,
  /**
   *A轮
   */
  awheel = 4,
  /**
   * B轮
   */
  bwheel = 5,
  /**
   * C轮
   */
  cwheel = 6,
  /**
   *D轮及以上
   */
  dwheel = 7,
  /**
   *已上市
   */
  listed = 8,
  /**
   *不需要融资
   */
  noFinancing = 9,
}
export interface IUser {
  /**
   * Id
   */
  _id: string;
  /**
   * 用户名
   */
  username: string;
  /**
   * 密码
   */
  password: string;
  /**
   * 头像地址
   */
   avatar: { data: Binary; name: string; size: number }
  /**
   * 姓名
   */
  name: string;
  /**
   * 性别
   */
  sex: UserSex;
  /**
   * 是否被禁用
   */
  isDisabled: SkuStatus;
  /**
   * 公司id
   */
  companyId: string;
  /**
   * 权限
   */
  role: UserRole;
  /**
   * 公司名
   */
  companyShortName: string;
  /**
   * 职位
   */
  positionName: string;
}

export interface ICompany {
  /**
   * Id
   */
  _id?: string;
  /**
   * 公司简称
   */
  companyShortName: string;
  /**
   * 公司全称
   */
  companyFullName: string;
  /**
   * 公司创始人id
   */
  userId: string;
  /**
   * 是否被禁用
   */
  isDisabled: SkuStatus;
  /**
   * 公司规模
   */
  companySize: companySize;
  /**
   * 行业分类
   */
  industryField: string;
  /**
   * 信息创建时间
   */
  time: string;
  /**
   * 信息更新时间
   */
  updateAt: string;
  /**
   * logo图地址
   */
  logo: string;
  /**
   * 融资情况
   */
  financeStage: FinanceStage;
  /**
   * 简介
   */
  describe: string;
  /**
   * 热度
   */
  like: string;
  /**
   * 公司职位
   */
  recruits: IRecruit[];
}

export interface IRecruit {
  /**
   * Id
   */
  _id: string;
  /**
   * 职位名
   */
  positionName: string;
  /**
   * 薪资
   */
  salary: { min: number; max: number };
  /**
   * 地点
   */
  city: string;
  /**
   * 工作经验
   */
  workYear: Year;
  /**
   * 最低学历
   */
  education: Education;
  /**
   * 公司ID
   */
  companyId: string;
  /**
   * 信息创建时间
   */
  time: string;
  /**
   * 信息更新时间
   */
  updatedAt: string;
  /**
   * 具体工作地址
   */
  location: string;
  /**
   * 招聘人ID
   */
  interviewerId: string;
  /**
   * 是否被禁用
   */
  isDisabled: SkuStatus;
  /**
   * 关键词
   */
  keyWords: string[];
  /**
   * 职位描述
   */
  describe: string;
  /**
   * 所属公司信息
   */
  companys: ICompany[];
  /**
   * 发布人信息
   */
  users: IUser[];
  userInfo: IUser[];
}

export interface IFindRecruit {
  /**
   * 职位名
   */
  keyWords?: string;
  /**
   * 薪资
   */
  salary?: string;
  /**
   * 地点
   */
  city?: string;
  /**
   * 工作经验
   */
  workYear?: Year;
  /**
   * 最低学历
   */
  education?: Education;
  /**
   * 公司规模
   */
  companySize?: companySize;
  /**
   * 公司融资情况
   */
  financeStage?: FinanceStage;
}

export interface IKey {
  _id: string;
  /**
   * 关键词名
   */
  name: string;
}
export interface IFav {
  _id: string;
  /**
   * 用户id
   */
  id: string;
  /**
   * 职位ID
   */
  items: IRecruit[];
}
